package com.zmn.plat.business.interfaces.orderconfig.orderstock;

import java.util.Date;
import java.util.List;

import com.zmn.plat.common.dto.orderconfig.orderstock.OrderStockDRO;
import com.zmn.plat.common.dto.orderconfig.orderstock.SpOrderStockDRO;
import com.zmn.plat.common.dto.orderconfig.orderstock.SpOrderStockWarningDRO;

/**
 * 描述：订单库存综合BService
 *
 * @author: tanghongjun
 * @time: 2020/4/21 10:18
 */
public interface OrderStockBService {

    /**
     * 描述: 根据前台产品ID/城市ID/时间查询当天库存量
     *
     * @param plat
     *            平台
     * @param cityId
     *            前台产品二级分类分类ID
     * @param date
     *            时间
     * @param showProductId
     *            前台产品ID
     * @return true 可以下单 false 不可以下单
     * @auther tanghongjun
     * @since 2020/4/25 16:10
     */
    OrderStockDRO getOrderStockStatusByCityAndDateAndShowProductId(Integer plat, Integer cityId, Date date, Integer showProductId);

    /**
     * 描述: 根据城市、分类和时间查询订单库存量
     *
     * @param plat
     *            平台
     * @param cityId
     *            城市ID 不能为空
     * @param servCategId
     *            服务分类ID 必传
     * @param date
     *            时间（精确到天） 必传
     * @return 库存量
     * @auther tanghongjun
     * @since 2020/4/21 9:44
     */
    OrderStockDRO getCityOrderStockByPlatAndCityAndCategAndDate(Integer plat, Integer cityId, Integer servCategId, Date date);

    /**
     * 描述: 根据城市服务商分类和时间查询服务商库存量
     *
     * @param plat
     *            平台 必传
     * @param cityId
     *            城市ID 必传
     * @param spId
     *            服务商ID 必传
     * @param servCategId
     *            服务分类ID 必传
     * @param date
     *            时间（精确到天） 必传
     * @return 库存量
     * @auther tanghongjun
     * @since 2020/4/21 9:44
     */
    OrderStockDRO getSpOrderStockByPlatAndCityAndSpAndCategAndDate(Integer plat, Integer cityId, Integer spId, Integer servCategId, Date date);

    /**
     * 描述: 根据城市服务商分类和时间批量查询服务商库存量
     *
     * @param plat
     *            平台 必传
     * @param cityId
     *            城市ID 必传
     * @param spIdList
     *            服务商ID 集合
     * @param servCategId
     *            服务分类ID 必传
     * @param date
     *            时间（精确到天） 必传
     * @return 库存量
     * @auther tanghongjun
     * @since 2020/4/21 9:44
     */
    List<SpOrderStockDRO> getSpOrderStockByPlatAndCityAndSpListAndCategAndDate(Integer plat, Integer cityId, List<Integer> spIdList, Integer servCategId, Date date);

    /**
     * 描述: 根据城市服务商分类查询服务商库存预警量
     *
     * @param cityId
     *            城市ID 必传
     * @param spId
     *            服务商ID 必传
     * @param servCategId
     *            服务分类ID 必传
     * @param categOneId
     *            一级分类ID 必传
     * @param categTwoId
     *            二级分类ID 必传
     * @param date
     *            时间（精确到天） 必传
     * @return
     */
    SpOrderStockWarningDRO getSpOrderStockWarning(Integer cityId, Integer spId, Integer servCategId, Integer categOneId, Integer categTwoId, Date date);
}
